"""
评论服务接口
"""
from typing import List, Dict, Any, Optional
from abc import ABC, abstractmethod

from app.models.comment import Comment


class ICommentService(ABC):
    """
    评论服务接口，定义评论服务的功能
    """
    
    @abstractmethod
    def add_comment(self, comment_data: Dict[str, Any]) -> Comment:
        """
        添加评论
        
        @param comment_data: 评论数据
        @return: 评论对象
        """
        pass
    
    @abstractmethod
    def get_comment(self, comment_id: str) -> Optional[Comment]:
        """
        获取评论
        
        @param comment_id: 评论 ID
        @return: 评论对象，如果不存在则返回 None
        """
        pass
    
    @abstractmethod
    def get_comments(self) -> List[Comment]:
        """
        获取所有评论
        
        @return: 评论列表
        """
        pass
    
    @abstractmethod
    def get_recent_comments(self, count: int = 50) -> List[Comment]:
        """
        获取最近的评论
        
        @param count: 评论数量
        @return: 评论列表
        """
        pass
    
    @abstractmethod
    def clear_comments(self) -> None:
        """
        清空评论
        """
        pass
    
    @abstractmethod
    def save_comments(self, file_path: str) -> bool:
        """
        保存评论到文件
        
        @param file_path: 文件路径
        @return: 是否成功保存
        """
        pass
    
    @abstractmethod
    def load_comments(self, file_path: str) -> bool:
        """
        从文件加载评论
        
        @param file_path: 文件路径
        @return: 是否成功加载
        """
        pass 